package interview.demo1;

/**
 * 插入排序:  插入排序算法有种递归的思想在里面，它由N-1趟排序组成。
 *         初始时，只考虑数组下标0处的元素，只有一个元素，显然是有序的。
 * @author
 * @create 2018-10-12 20:35
 **/
public class InsertSore {

    public static void main(String[] args) {
        int[] array = {10, 9, 1, 2, 3};

        System.out.println("排序前的数组为：");
        for (int i : array) {
            System.out.print(i +" ");
        }
        insertSore(array);
        System.out.println();
        System.out.println("排序后的数组为：");
        for (int i : array) {
            System.out.print(i+" ");
        }

    }

    public static void insertSore(int[] array){

        for (int i = 0; i < array.length; i++) {

            //当前一个数比这个数大的时候，则要进行替换
            //判断条件是如果前一个数比这个数大，才继续循环下去，例如
            //{4,7,3} 则第一次的时候，为4，第二次的时候不符合循环条件，为4,7
            //第三次，符合条件，为4,3,7，然后继续符合条件，继续比较，则为3,4,7
            for (int j = i; (j > 0) && (array[j] < array[j - 1]); j--) {
                int temp = array[j];
                array[j] = array[j - 1];
                array[j - 1] = temp;
            }
        }

    }
}
